home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
PASCAL
/
1463.ZIP
/
DRAW-2D.ARC
/
XLATE.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1986-12-03
|
5KB
|
130 lines
PROCEDURE XLATE;
VAR
DELX,DELY:REAL;
FLAG:BOOLEAN;
KODE,K:INTEGER;
BEGIN
MOVCUR(24,2);
WRITE('Select Reference Point & press Left button >');
RING(1);
FLAG := FALSE;
WHILE NOT(FLAG) DO
BEGIN
GETMOUSE(X,Y,PIXX,PIXY,OPTION);
IF BUTTON1 THEN FLAG := TRUE;
IF (BUTTON1) AND (OPTION <> 0) THEN
BEGIN
FLAG := FALSE;
RING2;
MOVCUR(24,1);
WRITE(BLKLINE);
MOVCUR(24,2);
WRITE('Move mouse cursor into graphics area!!');
END;
IF BUTTON2 THEN RING2;
END;
M1 := 2;
MOUSE(M1,M2,M3,M4); (* HIDE MOUSE *)
MARK(PIXX,PIXY,HRCOLOR);
M1 := 1; (* SHOW MOUSE *)
MOUSE(M1,M2,M3,M4);
LASTX := X;
LASTY := Y;
MOVCUR(24,1);
WRITE(BLKLINE);
MOVCUR(24,2);
WRITE('Select New Point & press Left button (Right button to Cancel) >');
RING(1);
FLAG := FALSE;
WHILE NOT(FLAG) DO
BEGIN
GETMOUSE(X,Y,PIXX,PIXY,OPTION);
IF (BUTTON1) OR (BUTTON2) THEN FLAG := TRUE;
IF (BUTTON1) AND (OPTION <> 0) THEN
BEGIN
FLAG := FALSE;
RING2;
MOVCUR(24,1);
WRITE(BLKLINE);
MOVCUR(24,2);
WRITE('Move mouse cursor into graphics area!!');
END;
END;
MOVCUR(24,1);
WRITE(BLKLINE);
IF BUTTON1 THEN
BEGIN
DELX := X - LASTX;
DELY := Y - LASTY;
PUSHID(KODE);
TRANSLAT(DELX,DELY,KODE);
CASE MNUM OF
1: BEGIN (* ENTIRE DRAWING *)
FOR K := 1 TO OBJPTR-1 DO
WITH DRAWARY[K] DO
BEGIN
CASE OBJTYP OF
1: MODVEC(X1,Y1,STKMAT[STKPTR-1]); (* POINT *)
2: BEGIN (* LINE *)
MODVEC(X1,Y1,STKMAT[STKPTR-1]);
MODVEC(X2,Y2,STKMAT[STKPTR-1]);
END;
3: BEGIN (* BOX *)
MODVEC(X1,Y1,STKMAT[STKPTR-1]);
MODVEC(X2,Y2,STKMAT[STKPTR-1]);
MODVEC(X3,Y3,STKMAT[STKPTR-1]);
END;
4: MODVEC(X1,Y1,STKMAT[STKPTR-1]); (* CIRCLE *)
(* radius does not change *)
END; (* CASE *)
END; (*WITH*)
END;
2: BEGIN (* AREA *)
FOR K := 1 TO OBJPTR-1 DO
WITH DRAWARY[K] DO
BEGIN
IF OBJSEL = 1 THEN
CASE OBJTYP OF
1: MODVEC(X1,Y1,STKMAT[STKPTR-1]); (* POINT *)
2: BEGIN (* LINE *)
MODVEC(X1,Y1,STKMAT[STKPTR-1]);
MODVEC(X2,Y2,STKMAT[STKPTR-1]);
END;
3: BEGIN (* BOX *)
MODVEC(X1,Y1,STKMAT[STKPTR-1]);
MODVEC(X2,Y2,STKMAT[STKPTR-1]);
MODVEC(X3,Y3,STKMAT[STKPTR-1]);
END;
4: MODVEC(X1,Y1,STKMAT[STKPTR-1]); (* CIRCLE *)
(* radius does not change *)
END; (* CASE *)
END; (*WITH*)
END;
3: BEGIN (* SINGLE OBJECT *)
WITH DRAWARY[SELNUM] DO
BEGIN
CASE OBJTYP OF
1: MODVEC(X1,Y1,STKMAT[STKPTR-1]); (* POINT *)
2: BEGIN (* LINE *)
MODVEC(X1,Y1,STKMAT[STKPTR-1]);
MODVEC(X2,Y2,STKMAT[STKPTR-1]);
END;
3: BEGIN (* BOX *)
MODVEC(X1,Y1,STKMAT[STKPTR-1]);
MODVEC(X2,Y2,STKMAT[STKPTR-1]);
MODVEC(X3,Y3,STKMAT[STKPTR-1]);
END;
4: MODVEC(X1,Y1,STKMAT[STKPTR-1]); (* CIRCLE *)
(* radius does not change *)
END; (* CASE *)
END; (*WITH*)
END;
END; (* CASE *)
POPMAT(KODE);
M1 := 2;
MOUSE(M1,M2,M3,M4); (* HIDE MOUSE *)
REDRAW;
M1 := 1; (* SHOW MOUSE *)
MOUSE(M1,M2,M3,M4);
END;
END; (*PROC*)